// 自定义指令：v-src
import { OSS_URL} from "@/assets/const/constData";

const defaultImage = require('@/assets/default.png'); // 处理 Webpack 路径
const baseURL = OSS_URL; // 指定域名

// 处理路径拼接
function combineUrl(path) {
    // 确保域名以斜杠结尾且路径不以斜杠开头
    const normalizedBase = baseURL.endsWith('/') ? baseURL : baseURL + '/';
    const normalizedPath = path.startsWith('/') ? path.slice(1) : path;
    return normalizedBase + normalizedPath;
}

// 更新图片地址的核心逻辑
function updateSrc(el, value) {
    if (!value || typeof value !== 'string') {
        el.src = defaultImage;
        return;
    }

    // 检测是否包含协议头
    const hasProtocol = /^https?:\/\//i.test(value);
    el.src = hasProtocol ? value : combineUrl(value);
}

export default {
    inserted(el, binding) {
        // 初始化设置图片地址
        updateSrc(el, binding.value);

        // 监听图片加载错误
        el.addEventListener('error', () => {
            el.src = defaultImage;
        });
    },
    update(el, binding) {
        // 绑定值变化时更新地址
        updateSrc(el, binding.value);
    }
};